<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Cliente extends CI_Controller {

	public function __construct(){
		parent::__construct();
		$this->load->model('cliente_model','cliente');
		$this->load->model('alegro_model','alegro');
	}
	
	public function index(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			$this->listar();
		}
	}
	
	//LISTAR CLIENTES
	public function listar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			
			if ( $this->session->userdata('perfil') == 'Administrador' ){
				$clientes = $this->cliente->get_all();
			} else {
				$clientes = $this->cliente->get_all_clientes_by_perfil($this->session->userdata('codigo_singem'));
			}

// 			echo "<pre>";
// 			print_r($clientes);
// 			exit;
			$dados = array(
					'titulo' 			=> 'Clientes',
					'subtitulo' 		=> 'Listar',
					'funcionalidade' 	=> 'Listagem avançada',
					'botaopadrao'		=> 'Adicionar Cliente',
					'modulo'			=> 'cliente',
					'tela' 				=> 'listar',
					'vendedor'			=> $this->session->userdata('codigo_singem'),
					'clientes'			=> json_encode($clientes),
			);
			$this->parser->parse('index', $dados);
		}
	}
	
	//VISUALIZAR CLIENTE
	// Função adicionada conforme solicitação do cliente na última reunião
	public function visualizar(){
		$id = (int)$this->uri->segment(3);
		if ( !empty($id) && !is_numeric($id) ){
			$this->session->set_flashdata('visualizarCliente', 'Ops! Alguma coisa inesperada aconteceu com o servidor ao tentar visualizar o cliente, por favor tente novamente mais tarde!');
			redirect('cliente');
		} else {
			$dados = array(
					'titulo' 			=> 'Clientes',
					'subtitulo' 		=> 'Visualizar',
					'funcionalidade' 	=> 'Visualizar Cliente',
					'modulo'			=> 'cliente',
					'tela' 				=> 'visualizar',
					'cliente'			=> json_encode($this->cliente->get_byid_singem_alegropedido($id)),
			);
			$this->parser->parse('index', $dados);
		}
	}
	
	//ADICIONAR CLIENTE
	public function adicionar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
		
			if ($this->input->post() != "") {

				/* Após o cadastro, o cliente não pode ser mais atualizado no sistema, devido a solicitação de Danilo "Alegro"
				if ( $this->input->post('Cliente') != "" && is_numeric($this->input->post('Cliente'))) {
					$this->atualizar();
				}
				*/
				
				//validação do form
				/*
				$this->form_validation->set_rules('cli_nome', 'Nome', 'trim|required|max_length[100]|ucwords');
				$this->form_validation->set_rules('tpcli_tipo', 'Tipo Cliente', 'trim|required|max_length[1]|ucwords');
				$this->form_validation->set_rules('cli_endereco', 'Endereço', 'trim|max_length[255]|ucwords');
				$this->form_validation->set_rules('cli_complemento', 'Complemento', 'trim|max_length[255]|ucwords');
				$this->form_validation->set_rules('cli_bairro', 'Bairro', 'trim|max_length[100]|ucwords');
				$this->form_validation->set_rules('cli_cidade', 'Cidade', 'trim|max_length[100]|ucwords');
				$this->form_validation->set_rules('cli_estado', 'Estado', 'trim|max_length[100]|ucwords');
				$this->form_validation->set_rules('cli_cep', 'CEP', 'trim|max_length[10]|ucwords');
				$this->form_validation->set_rules('cli_fantasia', 'NOME FANTASIA', 'trim|max_length[255]|ucwords');
				$this->form_validation->set_rules('cli_inscricao', 'INSCRIÇÃO ESTADUAL', 'trim|max_length[20]');
				
				$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
				$this->form_validation->set_rules('cli_cgc', 'CGC', 'trim|max_length[25]|is_unique[tbl_cliente.cli_cgc]');
				$this->form_validation->set_rules('cli_contato', 'CONTATO', 'trim|max_length[50]|ucwords');
				$this->form_validation->set_rules('cli_fone', 'TELEFONE', 'trim|max_length[15]');
				
				$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
				$this->form_validation->set_rules('cli_email', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email|is_unique[tbl_cliente.cli_email]');
				$this->form_validation->set_rules('cli_observacao', 'Observação', 'trim');
				
				$dados = elements(array('tpcli_tipo', 'usu_codigo', 'cli_nome',
									  	'cli_endereco', 'cli_complemento', 'cli_bairro', 'cli_cidade', 'cli_estado', 'cli_cep',
									  	'cli_fantasia', 'cli_inscricao', 'cli_cgc', 'cli_contato', 'cli_fone', 'cli_email',
									  	'cli_observacao', 'cli_pre_cadastro', 'cli_data_cadastro', 'cli_status', 'cli_excluido'
									  	), $this->input->post(NULL, TRUE)
									);
				*/
				
				$this->form_validation->set_rules('Vendedor', 'Vendedor', 'trim|required|integer');
				$this->form_validation->set_rules('Nome', 'Nome', 'trim|required|max_length[50]|ucwords');
				$this->form_validation->set_rules('Tipo', 'Tipo Cliente', 'trim|required|max_length[1]|ucwords');
				$this->form_validation->set_rules('Endereco', 'Endereço', 'trim|max_length[100]|ucwords');
				$this->form_validation->set_rules('Complemento', 'Complemento', 'trim|max_length[50]|ucwords');
				$this->form_validation->set_rules('Bairro', 'Bairro', 'trim|max_length[30]|ucwords');
				$this->form_validation->set_rules('Cidade', 'Cidade', 'trim|max_length[30]|ucwords');
				$this->form_validation->set_rules('UF', 'Estado', 'trim|max_length[2]|ucwords');
				$this->form_validation->set_rules('CEP', 'CEP', 'trim|max_length[15]|ucwords');
				$this->form_validation->set_rules('Fantasia', 'NOME FANTASIA', 'trim|max_length[50]|ucwords');
				$this->form_validation->set_rules('Inscricao', 'INSCRIÇÃO ESTADUAL', 'trim|max_length[20]');
				
				$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
				$this->form_validation->set_rules('CGC', 'CNPJ / CPF', 'trim|max_length[20]|is_unique[Cad_Clientes.CGC]');
				$this->form_validation->set_rules('Contato', 'CONTATO', 'trim|max_length[50]|ucwords');
				$this->form_validation->set_rules('Fone', 'TELEFONE', 'trim|max_length[30]');
				
				$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
				$this->form_validation->set_rules('EMail', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email|is_unique[Cad_Clientes.EMail]');
				$this->form_validation->set_rules('Observacoes', 'Observação', 'trim|max_length[50]');
				
				$dados = elements(array('Cliente', 'Tipo', 'Vendedor', 'Nome',
						'Endereco', 'Complemento', 'Bairro', 'Cidade', 'UF', 'CEP',
						'Fantasia', 'Inscricao', 'CGC', 'Contato', 'Fone', 'EMail',
						'Observacoes'
						), $this->input->post(NULL, TRUE)
				);
				
// 				echo "<pre>";
// 				print_r($dados);
// 				exit;
				
				if ($this->form_validation->run() == true){
					
					//Carrega o helper de Date para trabalhar com datas
					//$this->load->helper('date');
		
					//Pega a data atual
					//$now = time();
					//Converte para o formato americano: 2014-09-29 16:17:20
					//$humam = unix_to_human($now, TRUE, 'eu');
					//Converte para o formato unix
					//$unix = human_to_unix($humam);
					//$data = explode(" ", $humam);
					
					//$dados['cli_data_cadastro'] = $data[0];
					
					//Retirar o comentário dessa linha de código só quando for inserir o cliente na base AlegroPedidos
					//$dados['cli_codigo'] = $this->alegro->sequence('tbl_sequence', 'seq_cliente');
					$codigo_cliente = $this->alegro->sequence('tbl_sequence', 'seq_cliente');
					$dados['Cliente'] = "$codigo_cliente"; 
					
					//$dados['cli_data_cadastro'] = Date_Now('usa');
					//$dados['cli_pre_cadastro'] = 1;
					//$dados['cli_status'] = 1;
					//$dados['cli_excluido'] = 0;
// 					echo "<pre>";
// 					print_r($dados);
// 					echo "</pre>";
// 					exit;
					$this->cliente->do_adicionar($dados);
				}
				
				$dados += array(
						'titulo' 			=> 'Clientes',
						'subtitulo' 		=> 'Adicionar',
						'funcionalidade' 	=> 'Adicionar Cliente',
						'botaopadrao'		=> 'Adicionar',
						'botaolimpar'		=> 'Limpar',
						'modulo'			=> 'cliente',
						'tela' 				=> 'adicionar',
				);
			} else {
				$dados[] = "";
				
				//Recebe os registros dos estados
				$estados = $this->alegro->get_all('tbl_estado');
				
				if (!empty($estados) && $estados != null){
					echo "entrou no if";
					foreach ($estados as $key=>$value) {
						$dados[$value->est_codigo] = $value->est_nome;
					}
					$dados['estado'] = $dados;
				}
				
				
				//Destrói todos os array que não serão mais utilizados
				foreach ($estados as $key=>$value) {
					unset($dados[$value->est_codigo]);
				}
				
				$cidades = $this->alegro->get_all('tbl_cidade');
				
				if (!empty($cidades) && $cidades != null){
					foreach ($cidades as $key=>$value) {
						$dados[$value->cid_codigo] = $value->cid_nome;
					}
					$dados['cidade'] = $dados;
				}
				
				if (!empty($dados['cidade']['estado']) && $dados['cidade']['estado'] != null){
					unset($dados['cidade']['estado']);
					foreach ($cidades as $key=>$value) {
						unset($dados[$value->cid_codigo]);
					}
				}
				
				$estado = "";
				if (!empty($dados['estado']) && $dados['estado'] != null){
					$estado = $dados['estado'];
				}
				
				$cidade = "";
				if (!empty($dados['cidade']) && $dados['cidade'] != null){
					$cidade = $dados['cidade'];
				}
				
				$dados += array(
						'titulo' 			=> 'Clientes',
						'subtitulo' 		=> 'Adicionar',
						'funcionalidade' 	=> 'Adicionar Cliente',
						'botaopadrao'		=> 'Adicionar',
						'botaolimpar'		=> 'Limpar',
						'modulo'			=> 'cliente',
						'tela' 				=> 'adicionar',
						'estados'			=> $estado, //$this->alegro->get_all('tbl_estado'),
						'cidades'			=> $cidade,  //$this->alegro->get_all('tbl_cidade'),
						'vendedor'			=> $this->session->userdata('codigo_singem'),
				);
				
				
				//Destrói o array que não será mais utilizado
				unset($dados['estado']);
				unset($dados['cidade']);
				
			}
			$this->parser->parse('index', $dados);
		}
	}
	
	//ATUALIZAR CLIENTE
	/* Função Atualizar foi retirada por solicitação do cliente
	 * 
	public function atualizar(){
		if (!is_logado()) {
			redirect('alegro/login');
		} else {
			if ($this->input->post() != "") {
				if ( $this->input->post('cli_codigo') != "" && is_numeric($this->input->post('cli_codigo'))) {
				
					//validação do form
					$this->form_validation->set_rules('cli_nome', 'NOME', 'trim|required|max_length[100]|ucwords');
					$this->form_validation->set_rules('cli_endereco', 'ENDEREÇO', 'trim|max_length[255]|ucwords');
					$this->form_validation->set_rules('cli_complemento', 'COMPLEMENTO', 'trim');
					$this->form_validation->set_rules('cli_bairro', 'BAIRRO', 'trim|max_length[100]|ucwords');
					$this->form_validation->set_rules('est_codigo', 'ESTADO', 'trim|integer');
					$this->form_validation->set_rules('cid_codigo', 'CIDADE', 'trim|integer');
					$this->form_validation->set_rules('cli_cep', 'CEP', 'trim|max_length[10]|ucwords');
					$this->form_validation->set_rules('tpcli_tipo', 'NOME', 'trim|required|integer');
					$this->form_validation->set_rules('cli_fantasia', 'NOME FANTASIA', 'trim|max_length[255]|ucwords');
					$this->form_validation->set_rules('cli_inscricao', 'INSCRIÇÃO ESTADUAL', 'trim|max_length[20]');
					
					//$this->form_validation->set_message('unique_cgc', 'Este %s já está cadastrado no sistema');
					$this->form_validation->set_rules('cli_cgc', 'CGC', 'trim|max_length[25]|callback_unique_cgc');
					$this->form_validation->set_rules('cli_contato', 'CONTATO', 'trim|max_length[50]|ucwords');
					$this->form_validation->set_rules('cli_fone', 'TELEFONE', 'trim|max_length[15]');
					
					//$this->form_validation->set_message('is_unique', 'Este %s já está cadastrado no sistema');
					$this->form_validation->set_rules('cli_email', 'E-MAIL', 'trim|max_length[50]|strtolower|valid_email|callback_unique_email');
					$this->form_validation->set_rules('cli_observacao', 'COMPLEMENTO', 'trim');
				
					$dados = elements(array('cli_nome', 'tpcli_tipo',
											'cli_endereco', 'cli_complemento', 'cli_bairro', 'cid_codigo', 'est_codigo', 'cli_cep',
											'cli_fantasia', 'cli_inscricao', 'cli_cgc', 'cli_contato', 'cli_fone', 'cli_email',
											'cli_observacao', 'cli_pre_cadastro', 'cli_status', 'cli_excluido'
											), $this->input->post(NULL, TRUE)
										);
					
					if ($this->form_validation->run() == true){
						$this->cliente->do_atualizar($dados, array('cli_codigo'=>$this->input->post('cli_codigo')));
					}
				
					$dados += array(
							'titulo' 			=> 'Clientes',
							'subtitulo' 		=> 'Atualizar',
							'funcionalidade' 	=> 'Atualizar Cliente',
							'botaopadrao'		=> 'Atualizar',
							'botaolimpar'		=> 'Limpar',
							'modulo'			=> 'cliente',
							'tela' 				=> 'atualizar',
					);
				} else {
					$this->session->set_flashdata('edicaook', 'Erro, Registro não encontrado!');
					redirect('cliente/listar');
				}
			} else {
				if (!$id = $this->uri->segment(3)) {
					redirect('cliente/listar');
				} else {
					//Recebe os registros dos estados
					$estados = $this->alegro->get_all('tbl_estado');
					foreach ($estados as $key=>$value) {
						$dados[$value->est_codigo] = $value->est_nome;
					}
					
					$dados['estado'] = $dados;
					
					//Destrói todos os array que não serão mais utilizados
					foreach ($estados as $key=>$value) {
						unset($dados[$value->est_codigo]);
					}
					
					$cidades = $this->alegro->get_all('tbl_cidade');
					foreach ($cidades as $key=>$value) {
						$dados[$value->cid_codigo] = $value->cid_nome;
					}
					
					$dados['cidade'] = $dados;
					unset($dados['cidade']['estado']);
					foreach ($cidades as $key=>$value) {
						unset($dados[$value->cid_codigo]);
					}
					
					//Recebe o registro
					$return = array($this->cliente->get_byid_singem_alegropedido($id));
					$data = $return[0];
					
					echo "<pre>";
					print_r($data);
					exit;
					
					
					
					//cria um array com o valor das chaves como indice de cada array
					foreach ($data as $key=>$value) {
						$dados[$key] = $value;
					}
					
					$dados += array(
							'titulo' 			=> 'Clientes',
							'subtitulo' 		=> 'Atualizar',
							'funcionalidade' 	=> 'Atualizar Cliente',
							'botaopadrao'		=> 'Atualizar',
							'botaolimpar'		=> 'Limpar',
							'modulo'			=> 'cliente',
							'tela' 				=> 'atualizar',
							'estados'			=> $dados['estado'], //$this->alegro->get_all('tbl_estado'),
							'cidades'			=> $dados['cidade'] //$this->alegro->get_all('tbl_cidade'),
					);
					
					echo "<pre>";
					print_r($dados);
					exit;
					
					
					//Destrói o array que não será mais utilizado
					unset($dados['estado']);
					unset($dados['cidade']);
					
				}
			}
			$this->parser->parse('index', $dados);
		}
	}
	*/
	
	
	public function unique_cgc($cgc){
		$result = $this->cliente->get_bycgc($cgc);
		
		if ($result == null){
			return TRUE;
		} else {		
			if ($this->input->post('cli_codigo') == $result->cli_codigo){
				return TRUE;
			} else {
				$this->form_validation->set_message('unique_cgc', 'Este %s já está cadastrado no sistema');
				return FALSE;
			}
		}
	}
	
	public function unique_email($email){
		$result = $this->alegro->get_byemail($email, 'tbl_cliente', 'cli_email');
		
		if ($result == null){
			return TRUE;
		} else {
			if ($this->input->post('cli_email') == $result->cli_email){
				return TRUE;
			} else {
				$this->form_validation->set_message('unique_email', 'Este %s já está cadastrado no sistema');
				return FALSE;
			}
		}
	}
	
	
	
}